Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ


Displaying Rendered β€’ View raw β€’ Download

scripts/verify-flatpak/README.md docs/2.8.0-feature-docs (1f66dbf8) Text, 4.20 KB

Local Flatpak Verification

Replicates vid's T383838org.meshtastic.desktop GHA flatpak build on your machine so you
can validate T383838flatpak-sources.json end-to-end without round-tripping through his repo.

What it tests that our CI doesn't

Our CI (T383838:desktopApp:packageUberJarForCurrentOS :captureFlatpakSources) only proves the manifest can be generated.
Vid's CI is where the manifest actually gets consumed by T383838flatpak-builder. This script
runs that step locally:

1. Clones T383838vidplace7/org.meshtastic.desktop.
2. Overlays a patched manifest that:
β€’ Swaps the T383838meshtastic/Meshtastic-Android.git source for a T383838type: dir pointing at
your local checkout (so you can test uncommitted changes).
β€’ Uncomments T383838- flatpak-sources.json.
β€’ Drops T383838--share=network from the build-args (true offline β€” what Flathub requires).
β€’ Adds T383838--offline to the Gradle invocation (belt + suspenders).
3. Runs T383838flatpak-builder in a Docker container with the same Freedesktop 25.08 SDK
vid's GHA image uses.

If your T383838flatpak-sources.json has the wrong URL, wrong sha256, or a missing entry,
the build fails with the same error vid would see. You can iterate in ~5–15 min loops
instead of waiting on cross-repo CI.

Prerequisites

β€’ Docker (Docker Desktop on macOS works β€” the container needs T383838--privileged to use
bubblewrap; that's enabled by default).
β€’ ~10 GB free disk for the SDK + Gradle cache.
β€’ A populated Gradle cache (T383838./gradlew :desktopApp:packageUberJarForCurrentOS must have
run; the script does this implicitly via T383838:captureFlatpakSources).

Usage

T282828
T8b949e# Full offline build β€” Linux host required (~15–30 min first time)
scripts/verify-flatpak/verify.sh

T8b949e# URLs + sha256 verification only; skips the Gradle build phase.
T8b949e# Works on macOS where nested bwrap fails under Docker Desktop's seccomp.
scripts/verify-flatpak/verify.sh --download-only

T8b949e# Reuse an already-generated flatpak-sources.json (don't re-run Gradle)
scripts/verify-flatpak/verify.sh --skip-regen

T8b949e# Tight iteration loop after a failed run: refresh overlay yaml + manifest
T8b949e# only, then re-run flatpak-builder. Skips Gradle regen, vid-repo fetch,
T8b949e# and Meshtastic-Android rsync. Use when you've just patched the YAML
T8b949e# overlay or regenerated flatpak-sources.json by hand.
scripts/verify-flatpak/verify.sh --rebuild-only

T8b949e# Cross-arch test via QEMU emulation (slower)
scripts/verify-flatpak/verify.sh --arch aarch64

T8b949e# Drop into the builder container shell to poke at things
scripts/verify-flatpak/verify.sh --shell


macOS limitation

T383838flatpak-builder runs the build phase inside T383838bwrap (bubblewrap). Nested
bwrap fails inside Docker Desktop on macOS with
T383838prctl(PR_SET_SECCOMP) EINVAL. The script refuses to run a full build on
macOS by default β€” pass T383838--download-only to validate URLs + sha256s without
executing the Gradle build, or run the full script on a Linux host.

Interpreting failures

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Symptom β”‚ Likely cause β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ T383838Error downloading mirror: ... 404 on T383838repo.maven.apache.org β”‚ URL captured by the listener was w… β”‚
β”‚ T383838sha256 mismatch β”‚ Stale T383838flatpak-sources.json; re-run… β”‚
β”‚ Gradle: T383838Could not resolve all artifacts ... offline mode β”‚ Missing dep in the manifest β€” usua… β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Files

β€’ T383838verify.sh β€” entry point. Idempotent: re-running just re-syncs the overlay and re-runs flatpak-builder.
β€’ T383838desktop-offline.yaml β€” patched manifest. Kept in sync manually with vid's upstream;
diff against T383838https://raw.githubusercontent.com/vidplace7/org.meshtastic.desktop/main/org.meshtastic.desktop.yaml
if vid changes something material.

Served by rngit 1.5.0 - Generated in 0.04s